home *** CD-ROM | disk | FTP | other *** search
- package sun.demo.select;
-
- import java.awt.Button;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Event;
- import java.awt.Font;
- import java.awt.Label;
- import java.awt.LayoutManager;
- import java.awt.List;
- import java.awt.Panel;
- import java.awt.TextField;
- import java.beans.Customizer;
- import java.beans.PropertyChangeListener;
- import java.beans.PropertyChangeSupport;
- import java.sql.Connection;
- import java.sql.DatabaseMetaData;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.Vector;
-
- public class SelectCustomizer extends Panel implements Customizer {
- private PropertyChangeSupport support = new PropertyChangeSupport(this);
- TextField urlField;
- TextField userField;
- TextField passwordField;
- Button viewButton;
- Button backToTableButton;
- Button backToStartButton;
- Button userTablesButton;
- Button allTablesButton;
- Label status = new Label("");
- int buttonOffset;
- static final int NO_WORK = 0;
- static final int DO_USER_TABLES = 1;
- static final int DO_ALL_TABLES = 2;
- static final int DO_VIEW = 3;
- int work = 0;
- String spaces = " ";
- Connection con;
- String url;
- String user;
- String password;
- Vector tableNames;
- List tableList;
- List columnList;
- String tableName;
- String selectString;
- Vector columnNames;
- Vector columnTypes;
- Select target;
-
- public SelectCustomizer() {
- ((Container)this).setLayout((LayoutManager)null);
- ((Component)this).reshape(200, 200, 400, 500);
- new CustomizerWorkerThread(this);
- }
-
- public void setObject(Object var1) {
- this.target = (Select)var1;
- this.url = this.target.getURL();
- this.user = this.target.getUser();
- this.password = this.target.getPassword();
- this.createStartupScreen();
- ((Component)this).show();
- }
-
- void doWork() {
- while(true) {
- int var1 = this.getWork();
- this.con = Util.connect(this.url, this.user, this.password, this.status);
- if (this.con != null) {
- if (var1 == 1) {
- this.getTables(false);
- } else if (var1 == 2) {
- this.getTables(true);
- } else if (var1 == 3) {
- this.getInfo(this.tableName);
- }
-
- Util.disconnect(this.con);
- }
- }
- }
-
- private synchronized int getWork() {
- this.work = 0;
-
- while(this.work == 0) {
- try {
- this.wait();
- } catch (Exception var2) {
- }
- }
-
- int var1 = this.work;
- return var1;
- }
-
- private void getTables(boolean var1) {
- try {
- this.setStatus("Opened connection OK, searching for tables...");
- DatabaseMetaData var2 = this.con.getMetaData();
- String[] var3;
- if (var1) {
- var3 = new String[]{"TABLE", "SYSTEM TABLE"};
- } else {
- var3 = new String[]{"TABLE", null};
- }
-
- ResultSet var4 = var2.getTables((String)null, "%", "%", var3);
- this.tableNames = new Vector();
-
- int var5;
- for(var5 = 0; var4.next(); ++var5) {
- String var6 = var4.getString(2) + "." + var4.getString(3);
- this.tableNames.addElement(var6);
- }
-
- var4.close();
- this.setStatus("Got " + var5 + " tables");
- this.createTableScreen();
- } catch (SQLException var7) {
- this.setStatus(var7);
- System.err.println("Caught SQLException : " + var7);
- ((Throwable)var7).printStackTrace();
- } catch (Exception var8) {
- this.setStatus("Couldn't load JDBC-ODBC bridge driver");
- System.err.println("Caught Exception : " + var8);
- ((Throwable)var8).printStackTrace();
- }
- }
-
- public void getInfo(String var1) {
- this.createInfoScreen(var1);
- this.columnNames = new Vector();
- this.columnTypes = new Vector();
-
- try {
- int var2 = var1.indexOf(46);
- String var3 = var1.substring(0, var2);
- String var4 = var1.substring(var2 + 1, var1.length());
- DatabaseMetaData var5 = this.con.getMetaData();
-
- ResultSet var6;
- String var11;
- for(var6 = var5.getColumns((String)null, var3, var4, "%"); var6.next(); this.columnTypes.addElement(var11)) {
- String var7 = var6.getString(4);
- this.columnNames.addElement(var7);
- short var8 = var6.getShort(5);
- short var9 = var6.getShort(7);
- short var10 = var6.getShort(9);
- switch (var8) {
- case -7:
- var11 = "BIT";
- break;
- case -6:
- var11 = "TINYINT";
- break;
- case -5:
- var11 = "BIGINT";
- break;
- case -4:
- var11 = "LONGVARBINARY";
- break;
- case -3:
- var11 = "VARBINARY(" + var9 + ")";
- break;
- case -2:
- var11 = "BINARY(" + var9 + ")";
- break;
- case -1:
- var11 = "LONGVARCHAR";
- break;
- case 1:
- var11 = "CHAR(" + var9 + ")";
- break;
- case 2:
- var11 = "NUMERIC(" + var9 + "," + var10 + ")";
- break;
- case 3:
- var11 = "DECIMAL(" + var9 + "," + var10 + ")";
- break;
- case 4:
- var11 = "INTEGER";
- break;
- case 5:
- var11 = "SMALLINT";
- break;
- case 6:
- var11 = "FLOAT";
- break;
- case 7:
- var11 = "REAL";
- break;
- case 8:
- var11 = "DOUBLE";
- break;
- case 12:
- var11 = "CHAR(" + var9 + ")";
- break;
- case 91:
- var11 = "DATE";
- break;
- case 92:
- var11 = "TIME";
- break;
- case 93:
- var11 = "TIMESTAMP";
- break;
- case 1111:
- var11 = "OTHER";
- break;
- default:
- var11 = "???";
- }
- }
-
- var6.close();
- this.finishInfoScreen();
- } catch (SQLException var12) {
- this.setStatus(var12);
- }
- }
-
- synchronized void resetScreen() {
- ((Container)this).removeAll();
- int var1 = ((Component)this).size().width;
- int var2 = ((Component)this).size().height;
- this.buttonOffset = 10;
- this.status = new Label("", 0);
- ((Container)this).add(this.status);
- this.status.reshape(15, var2 - 30, 2 * var1, 25);
- }
-
- synchronized void addButton(Button var1) {
- int var2 = ((Component)this).size().height;
- ((Container)this).add(var1);
- ((Component)var1).reshape(this.buttonOffset, var2 - 65, 80, 30);
- this.buttonOffset += 80;
- }
-
- synchronized void createStartupScreen() {
- this.resetScreen();
- int var1 = ((Component)this).size().width;
- Label var2 = new Label("Welcome to the Select Customizer.", 1);
- ((Container)this).add(var2);
- ((Component)var2).setFont(new Font("Dialog", 0, 16));
- ((Component)var2).reshape(10, 100, var1 - 20, 50);
- Label var3 = new Label("JDBC URL:", 2);
- ((Container)this).add(var3);
- ((Component)var3).reshape(20, 250, 70, 30);
- this.urlField = new TextField(this.url, 40);
- ((Container)this).add(this.urlField);
- this.urlField.reshape(100, 250, 280, 30);
- Label var4 = new Label("User:", 2);
- ((Container)this).add(var4);
- ((Component)var4).reshape(20, 300, 70, 30);
- this.userField = new TextField(this.user, 40);
- ((Container)this).add(this.userField);
- this.userField.reshape(100, 300, 280, 30);
- Label var5 = new Label("Password:", 2);
- ((Container)this).add(var5);
- ((Component)var5).reshape(20, 350, 70, 30);
- this.passwordField = new TextField(this.password, 40);
- ((Container)this).add(this.passwordField);
- this.passwordField.reshape(100, 350, 280, 30);
- this.setStatus("Enter login info and push \"user tables\" or \"all tables\"");
- this.userTablesButton = new Button("User Tables");
- this.addButton(this.userTablesButton);
- this.allTablesButton = new Button("All Tables");
- this.addButton(this.allTablesButton);
- }
-
- synchronized void createTableScreen() {
- this.resetScreen();
- int var1 = ((Component)this).size().width;
- int var2 = ((Component)this).size().height;
- String var3 = "Database \"" + this.url + "\" has " + this.tableNames.size() + " tables.";
- Label var4 = new Label(var3, 0);
- ((Container)this).add(var4);
- ((Component)var4).reshape(30, 10, var1 - 20, 25);
- this.backToStartButton = new Button("Back");
- this.addButton(this.backToStartButton);
- this.tableList = new List();
- ((Container)this).add(this.tableList);
-
- for(int var5 = 0; var5 < this.tableNames.size(); ++var5) {
- String var6 = (String)this.tableNames.elementAt(var5);
- this.tableList.addItem(var6);
- }
-
- this.tableList.reshape(30, 40, 240, var2 - 110);
- this.setStatus("Please chose a table");
- }
-
- synchronized void createInfoScreen(String var1) {
- this.resetScreen();
- int var2 = ((Component)this).size().width;
- ((Component)this).size();
- Label var3 = new Label("Database: " + this.url, 0);
- ((Container)this).add(var3);
- ((Component)var3).reshape(30, 35, var2 - 40, 20);
- Label var4 = new Label("Table: " + var1, 0);
- ((Container)this).add(var4);
- ((Component)var4).reshape(30, 55, var2 - 20, 20);
- this.backToTableButton = new Button("Back");
- this.addButton(this.backToTableButton);
- this.setStatus("Loading table info...");
- }
-
- synchronized void finishInfoScreen() {
- int var1 = ((Component)this).size().width;
- int var2 = ((Component)this).size().height;
- Label var3 = new Label("Number of columns: " + this.columnNames.size(), 0);
- ((Container)this).add(var3);
- ((Component)var3).reshape(30, 75, var1 - 20, 20);
- this.columnList = new List();
- this.columnList.setFont(new Font("Courier", 0, 12));
- this.columnList.setMultipleMode(true);
- ((Container)this).add(this.columnList);
-
- for(int var4 = 0; var4 < this.columnNames.size(); ++var4) {
- String var5 = (String)this.columnNames.elementAt(var4);
- String var6 = (String)this.columnTypes.elementAt(var4);
- int var7 = 22 - var5.length();
- String var8 = var5;
- if (var7 > 0) {
- var8 = var5 + this.spaces.substring(0, var7);
- }
-
- var8 = var8 + var6;
- this.columnList.addItem(var8);
- }
-
- this.columnList.reshape(30, 120, 260, var2 - 200);
- this.setStatus("Choose the columns you want in the SQL SELECT.");
- }
-
- synchronized void setStatus(String var1) {
- this.status.setText(var1);
- }
-
- synchronized void setStatus(SQLException var1) {
- System.err.println("Caught " + var1);
- this.setStatus(String.valueOf(var1));
- }
-
- private void exit() {
- println("Exiting");
- System.exit(0);
- }
-
- public synchronized boolean handleEvent(Event var1) {
- if (var1.id == 201) {
- this.exit();
- }
-
- if (var1.target != this.columnList || var1.id != 701 && var1.id != 702) {
- if (var1.target == this.tableList && var1.id == 701) {
- this.tableName = this.tableList.getSelectedItem();
- this.work = 3;
- this.notify();
- return false;
- } else if (var1.target != this.urlField || var1.id != 402 && var1.id != 404) {
- if (var1.target != this.userField || var1.id != 402 && var1.id != 404) {
- if (var1.target != this.passwordField || var1.id != 402 && var1.id != 404) {
- if (var1.target != null && var1.id == 1001) {
- if (var1.target == this.userTablesButton) {
- this.url = this.urlField.getText();
- this.work = 1;
- this.notify();
- } else if (var1.target == this.allTablesButton) {
- this.url = this.urlField.getText();
- this.work = 2;
- this.notify();
- } else if (var1.target == this.viewButton) {
- String var2 = this.tableList.getSelectedItem();
- if (var2 == null) {
- this.setStatus("Please chose a table");
- } else {
- this.tableName = var2;
- this.work = 3;
- this.notify();
- }
- } else if (var1.target == this.backToStartButton) {
- this.createStartupScreen();
- } else if (var1.target == this.backToTableButton) {
- this.createTableScreen();
- }
-
- return false;
- } else {
- return false;
- }
- } else {
- this.password = this.passwordField.getText();
- this.target.setPassword(this.password);
- this.support.firePropertyChange("password", (Object)null, this.password);
- return false;
- }
- } else {
- this.user = this.userField.getText();
- this.target.setUser(this.user);
- this.support.firePropertyChange("user", (Object)null, this.user);
- return false;
- }
- } else {
- this.url = this.urlField.getText();
- this.target.setURL(this.url);
- this.support.firePropertyChange("URL", (Object)null, this.url);
- return false;
- }
- } else {
- this.updateSelect();
- return false;
- }
- }
-
- private void updateSelect() {
- int var1 = this.columnList.getItemCount();
- String var2 = null;
-
- for(int var3 = 0; var3 < var1; ++var3) {
- if (this.columnList.isIndexSelected(var3)) {
- String var4 = (String)this.columnNames.elementAt(var3);
- if (var2 == null) {
- var2 = var4;
- } else {
- var2 = var2 + ", " + var4;
- }
- }
- }
-
- if (var2 == null) {
- this.selectString = "";
- } else {
- this.selectString = "SELECT " + var2 + " FROM " + this.tableName;
- }
-
- System.err.println(this.selectString);
- this.target.setSQL(this.selectString);
- this.support.firePropertyChange("SQL", (Object)null, this.selectString);
- this.target.update();
- }
-
- static void println(String var0) {
- System.out.println(var0);
- }
-
- static void print(String var0) {
- System.out.print(var0);
- }
-
- public void addPropertyChangeListener(PropertyChangeListener var1) {
- this.support.addPropertyChangeListener(var1);
- }
-
- public void removePropertyChangeListener(PropertyChangeListener var1) {
- this.support.removePropertyChangeListener(var1);
- }
- }
-